Determining pickup and destination locations for autonomous vehicles

ABSTRACT

Aspects of the disclosure provide systems and methods for providing suggested locations for pick up and destination locations. Pick up locations may include locations where an autonomous vehicle can pick up a passenger, while destination locations may include locations where the vehicle can wait for an additional passenger, stop and wait for a passenger to perform some task and return to the vehicle, or for the vehicle to drop off a passenger. As such, a request for a vehicle may be received from a client computing device. The request may identify a first location. A set of one or more suggested locations may be selected by comparing the predetermined locations to the first location. The set may be provided to the client computing device.

CROSS-REFERENCES TO RELATED APPLICATIONS

The present application is a continuation of U.S. patent applicationSer. No. 16/196,194, filed Nov. 20, 2018, which is a continuation ofU.S. patent application Ser. No. 15/645,297, filed on Jul. 10, 2017,issued as U.S. Pat. No. 10,156,449, which is a continuation of U.S.patent application Ser. No. 14/745,799, filed on Jun. 22, 2015, issuedas U.S. Pat. No. 9,733,096 the disclosures of which are incorporatedherein by reference.

BACKGROUND

Autonomous vehicles, such as vehicles that do not require a humandriver, can be used to aid in the transport of passengers or items fromone location to another. Such vehicles may operate in a fully autonomousmode where passengers may provide some initial input, such as a pick upor destination location, and the vehicle maneuvers itself to thatlocation.

BRIEF SUMMARY

One aspect of the disclosure provides a system. The system may includememory storing detailed map information identifying a plurality ofpredetermined locations where a vehicle is able to pick up or drop offpassengers. The system may also include one or more server computerseach having one or more processors. The one or more server computers maybe configured to: receive a request from a client computing device, therequest identifying a first location; select a set of one or moresuggested locations by comparing the predetermined locations to thefirst location; and provide the set of one or more suggested locationsto the client computing device.

In one example, the one or more server computers are configured toselect the set of one or more suggested locations by determining whetherthe first location corresponds to a predetermined location, and when thefirst location corresponds to the predetermined location, including thepredetermined location in the set. In another example, the one or moreserver computers are configured to select the set of one or moresuggested locations by identifying predetermined locations of theplurality of predetermined location that are within a threshold distanceof the first location. In another example, the threshold distance isdefined as a walking distance. Alternatively, the threshold distance isdefined as a radial distance. In addition, the one or more servercomputers are configured to select the set of one or more suggestedlocations by scoring each given one of the identified predeterminedlocations based on a first plurality of factors related to thedifficulty in a person reaching that given one of the identifiedpredetermined locations from the first location and the set of one ormore suggested locations is also selected based upon the scoring of theidentified predetermined locations.

In another example, the one or more server computers are configured toconduct the scoring of each given one of the identified predeterminedlocations also based on a second plurality of factors related to thedifficulty in an autonomous vehicle reaching and stopping at that givenone of the identified predetermined locations. In this example, the oneor more server computers are also configured to determine at least oneof the second plurality of factors based on a current location of theautonomous vehicle. In another example, the one or more server computersare configured to select the set of one or more suggested locations byidentifying a set number of predetermined locations of the plurality ofpredetermined locations that are within a threshold distance of thefirst location and closest to the first location. In this example, thesystem also includes one or more autonomous vehicles, and wherein theone or more server computers are also configured to receive, from theclient computing device, a selection of a suggested location of the setof one or more suggested locations and dispatch a vehicle of the one ormore autonomous vehicles to the selected suggested location. In anotherexample, the first location is a destination location and the one ormore server computing devices are also configured to receive, from theclient computing device, information confirming the first location asthe destination location and provide instructions to a vehicle to dropoff a passenger at the first location. In another example, the firstlocation is a pick up location and the one or more server computingdevices are also configured to receive, from the client computingdevice, information confirming the first location as the pickup locationand dispatch a vehicle to the first location.

Another aspect of the disclosure provides a computer-implemented method.The method includes accessing, by one or more processors of one or moreserver computing devices, detailed map information identifying aplurality of predetermined locations where a vehicle is able to pick upor drop off passengers; receiving, by the one or more processors, arequest from a client computing device, the request identifying a firstlocation; selecting, by the one or more processors, a set of one or moresuggested locations by comparing the predetermined locations to thefirst location and identifying predetermined locations of the pluralityof predetermined locations that are within a threshold distance of thefirst location and closest to the first location; and providing, by theone or more processors, the set of one or more suggested locations tothe client computing device.

In one example, selecting the set of one or more suggested locationsincludes determining whether the first location corresponds to apredetermined location, and when the first location corresponds to thepredetermined location, including the predetermined location in the set.In another example, selecting the set includes selecting a predeterminednumber of predetermined locations of the plurality of predeterminedlocations that are within a threshold distance of the first location andclosest to the first location. In this example, the threshold distanceis defined as a walking distance. Alternatively, the threshold distanceis defined as a radial distance. In addition, selecting the set of oneor more suggested locations includes scoring each given one of theidentified predetermined locations based on a first plurality of factorsrelated to the difficulty in a person reaching that given one of theidentified predetermined locations from the first location and using thescoring of the identified predetermined locations to select the set ofone or more suggested locations. In this example, the scoring of eachgiven one of the identified predetermined locations is conducted basedon a second plurality of factors related to the difficulty in anautonomous vehicle reaching and stopping at that given one of theidentified predetermined locations.

A further aspect of the disclosure provides a non-transitory, tangible,computer readable medium on which instructions are stored. Theinstructions, when executed by one or more processors, cause the one ormore processors to perform a method. The method includes accessingdetailed map information identifying a plurality of predeterminedlocations where a vehicle is able to pick up or drop off passengers;receiving a request from a client computing device, the requestidentifying a first location; selecting a set of one or more suggestedlocations by comparing the predetermined locations to the firstlocation; scoring given ones of the plurality predetermined locationsbased on a first plurality of factors related to the difficulty in aperson reaching a respective given one of the identified predeterminedlocations from the first location; providing the set of one or moresuggested locations to the client computing device; and provideinstructions to a vehicle to drop off a passenger at the first location.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a pictorial diagram of an example system in accordance with anexemplary embodiment.

FIG. 2 is a functional diagram of the system of FIG. 1 in accordancewith aspects of the disclosure.

FIG. 3 is an example of detailed map information in accordance withaspects of the disclosure.

FIGS. 4A, 4B, and 4C are example client devices and screen shots inaccordance with aspects of the disclosure.

FIG. 5 is another example of detailed map information and requestedpickup location in accordance with aspects of the disclosure.

FIG. 6 is another example client device and screen shot in accordancewith aspects of the disclosure.

FIG. 7 is an example of detailed map information and data in accordancewith aspects of the disclosure.

FIG. 8 is another example of detailed map information and data inaccordance with aspects of the disclosure.

FIG. 9 is a further example of detailed map information and data inaccordance with aspects of the disclosure.

FIG. 10A is an example of detailed map information and data inaccordance with aspects of the disclosure.

FIG. 10B is an example client device and screen shot in accordance withaspects of the disclosure.

FIG. 11 is another example of detailed map information and data inaccordance with aspects of the disclosure.

FIG. 12 is an example flow diagram in accordance with aspects of thedisclosure.

DETAILED DESCRIPTION

Overview

The technology relates to an autonomous vehicle service for maneuveringa user or passenger to a destination, for example taking a trip,autonomously. In order to do so, the user may provide a pickup locationand one or more destination locations for the trip to a centralizeddispatching system via a client computing device, such as a mobilephone. However, not all locations may be accessible or safe for apassenger pick up, for the vehicle to stop and wait for a passenger toperform some task and return to the vehicle, or for the vehicle to dropoff a passenger. For example, autonomous vehicles may not be able todrive everywhere a human driven vehicle can. In addition, roadconditions such as construction, emergency services activity, and speedlimits (some may be too high for autonomous driving or picking up ordropping off passengers) can pose complications for autonomous vehiclesand safety issues for picking up or dropping off passengers. To addressthis, when provided with a location, the centralized dispatching systemmay provide a set of one or more suggested locations corresponding tolocations that an autonomous vehicle can pick up a passenger (pickuplocation) or locations where the vehicle can wait for an additionalpassenger, stop and wait for a passenger to perform some task and returnto the vehicle, or for the vehicle to drop off a passenger (destinationlocation). These suggested locations may include those provided by theuser and/or convenient nearby locations. Thus, the features describedherein may provide for increases in the availability, safety, andusefulness of the services of autonomous vehicles.

Pick up and destination locations may be identified in various ways. Asan example, the pickup location can be defaulted to current location ofthe user's client computing device, but may also be a recent or savedlocation near the current location associated with the user's account.The user may enter an address or other location information, tap alocation on a map, or select a location from a list in order to identifya pickup and/or destination location. The user's client computing devicemay send the location or locations to one or more server computingdevices of the centralized dispatching system.

In order to provide suggestion in response, the one or more servercomputing devices may access detailed map information. The detailed mapinformation may include information about roads, buildings, elevations,fire hydrants, construction zones, real time traffic conditions, etc.from various sources such as governmental institutions, paidinformational services, manually entered information, informationgathered and provided in real time by autonomous vehicles, etc. Thedetailed map information may also include information identifyingpredetermined locations where an autonomous vehicle can stop to pick upor drop off a passenger. These predetermined locations may includereasonable locations where a vehicle could stop selected manually orthrough some analysis of the characteristics of each location. Thepredetermined locations may also be limited to locations within aservice area of the autonomous vehicle service.

Once a pickup or destination location is received, the one or moreserver computing devices may access the detailed map information todetermine whether the received location corresponds to one of thepredetermined locations. If so, the one or more server computing devicesmay determine that the received location is in fact reachable.

The one or more server computing devices may then provide a notificationto the client computing device including a suggested locationcorresponding to the received location. The user may then approve orselect the returned suggested location as a pick up or destinationlocation and initiate (or continue as the case may be) a trip. If thelocation is a pickup location, the server may then dispatch a vehicle tothe selected location to pick up the user for a trip.

When the received location does not correspond to one of thepredetermined locations, the one or more server computing devices mayuse the detailed map information to identify a set of predeterminedlocations within a threshold distance of the received location. Thethreshold distance may be defined as a predetermined radial or walkingdistance from the received location and may also be adjusted by a user.For example, a default threshold distance may be 500 feet, or more orless, radially or in walking distance from a particular location. A usermay then use his or her client computing device to adjust this value upor down and any adjustments may be provided to the one or more servercomputing devices by the user's client computing device.

For example, this set may include all of the predetermined locationswithin the threshold distance, or the one or more predeterminedlocations up to a maximum, within the threshold distance, that areclosest to the received location. This set may then be provided to theclient computing devices as a set of suggested locations for the user.In some examples, the set may be empty and the user provided with anotification that the received location is unavailable.

In one example, rather than returning all of the predetermined locationsin the set, one or more predetermined locations may be selected for andreturned as a set of suggested locations to the user. For example, eachpredetermined location within the set may be scored using variousfactors and the one or more highest (or lowest depending upon scale)scoring locations may be returned as suggested locations to the user.

In addition, as discussed in detail below, the features described hereinallow for various alternatives.

Example Systems

As shown in FIGS. 1 and 2, a system 100 in accordance with one aspect ofthe disclosure includes various components such as vehicles 100A and100B. While certain aspects of the disclosure are particularly useful inconnection with specific types of vehicles, the vehicle may be any typeof vehicle including, but not limited to, cars, trucks, motorcycles,busses, recreational vehicles, etc. The vehicles may have one or morecomputing devices, such as computing device 101 (shown in FIG. 2)containing one or more processors 102, memory 104, data 108,instructions 106 and other components typically present in vehicleshaving an autonomous driving mode. In this regard, computing device 101may be an autonomous driving system that can control aspects of vehicle100A in order to maneuver vehicle 100A for example, between pickup anddestination locations. In addition vehicle 100B may be configured thesame or similarly to vehicle 100A.

The memory 104 stores information accessible by the one or moreprocessors 102, including instructions 106 and data 108 that may beexecuted or otherwise used by the processor 102. The memory 104 may beof any type capable of storing information accessible by the processor,including a computing device-readable medium, or other medium thatstores data that may be read with the aid of an electronic device, suchas a hard-drive, memory card, ROM, RAM, DVD or other optical disks, aswell as other write-capable and read-only memories. Systems and methodsmay include different combinations of the foregoing, whereby differentportions of the instructions and data are stored on different types ofmedia.

The instructions 106 may be any set of instructions to be executeddirectly (such as machine code) or indirectly (such as scripts) by theprocessor. For example, the instructions may be stored as computingdevice code on the computing device-readable medium. In that regard, theterms “instructions” and “programs” may be used interchangeably herein.The instructions may be stored in object code format for directprocessing by the processor, or in any other computing device languageincluding scripts or collections of independent source code modules thatare interpreted on demand or compiled in advance. Functions, methods androutines of the instructions are explained in more detail below.

The data 108 may be retrieved, stored or modified by processor 102 inaccordance with the instructions 106. For instance, although the claimedsubject matter is not limited by any particular data structure, the datamay be stored in computing device registers, in a relational database asa table having a plurality of different fields and records, XMLdocuments or flat files. The data may also be formatted in any computingdevice-readable format.

The one or more processor 102 may be any conventional processors, suchas commercially available CPUs. Alternatively, the one or moreprocessors may be a dedicated device such as an ASIC or otherhardware-based processor. Although FIG. 2 functionally illustrates theprocessor, memory, and other elements of the vehicle's computing device101 as being within the same block, it will be understood by those ofordinary skill in the art that the processor, computing device, ormemory may actually include multiple processors, computing devices, ormemories that may or may not be stored within the same physical housing.For example, memory may be a hard drive or other storage media locatedin a housing different from that of computing device 101. Accordingly,references to a processor or computing device will be understood toinclude references to a collection of processors or computing devices ormemories that may or may not operate in parallel.

Computing device 101 may include all of the components normally used inconnection with a computing device such as the processor and memorydescribed above as well as a user input (e.g., a mouse, keyboard, touchscreen and/or microphone) and various electronic displays (e.g., amonitor having a screen or any other electrical device that is operableto display information). In this example, the vehicle includes aninternal electronic display as well as one or more speakers to provideinformation or audio visual experiences. In this regard, an internalelectronic display may be located within a cabin of vehicle 100A and maybe used by computing device 101 to provide information to passengerswithin the vehicle 100A.

Computing device 101 may also include one or more wireless networkconnections to facilitate communication with other computing devices,such as the client computing devices and server computing devicesdescribed in detail below. The wireless network connections may includeshort range communication protocols such as Bluetooth, Bluetooth lowenergy (LE), cellular connections, as well as various configurations andprotocols including the Internet, World Wide Web, intranets, virtualprivate networks, wide area networks, local networks, private networksusing communication protocols proprietary to one or more companies,Ethernet, WiFi and HTTP, and various combinations of the foregoing.

Computing device 101 of vehicle 100A may also receive or transferinformation to and from other computing devices. In this regard, system100 also includes a plurality of computing devices 110, 120, 130, 140and a storage system 150 connected via a network 160. As noted above,system 100 also includes vehicle 100B, which may be configured similarlyto vehicle 100. Although only a few vehicles and computing devices aredepicted for simplicity, a typical system may include significantlymore.

As shown in FIG. 2, each of computing devices 110, 120, 130, 140 mayinclude one or more processors, memory, data and instructions. Suchprocessors, memories, data and instructions may be configured similarlyto one or more processors 102, memory 104, data 108, and instructions106 of computing device 101.

The network 160, and intervening nodes, may include variousconfigurations and protocols including short range communicationprotocols such as Bluetooth, Bluetooth LE, the Internet, World Wide Web,intranets, virtual private networks, wide area networks, local networks,private networks using communication protocols proprietary to one ormore companies, Ethernet, WiFi and HTTP, and various combinations of theforegoing. Such communication may be facilitated by any device capableof transmitting data to and from other computing devices, such as modemsand wireless interfaces.

In one example, one or more computing devices 110 may include a serverhaving a plurality of computing devices, e.g., a load balanced serverfarm, that exchange information with different nodes of a network forthe purpose of receiving, processing and transmitting the data to andfrom other computing devices. For instance, one or more computingdevices 110 may include one or more server computing devices that arecapable of communicating with computing device 101 of vehicle 100A or asimilar computing device of vehicle 100B as well as computing devices120, 130, 140 via the network 160. For example, vehicles 100A and 100Bmay be a part of a fleet of vehicles that can be dispatched by servercomputing devices to various locations. In this regard, the vehicles ofthe fleet may periodically send the server computing devices locationinformation provided by the vehicle's respective positioning systems andthe one or more server computing devices may track the locations of thevehicles.

In addition, server computing devices 110 may use network 160 totransmit and present information to a user, such as user 122, 132, 142(shown in FIG. 1) on a display, such as displays 114, 134, 144 ofcomputing devices 120, 130, 140. In this regard, computing devices 120,130, 140 may be considered client computing devices.

As shown in FIG. 1, each client computing device 120, 130, 140 may be apersonal computing device intended for use by a user 122, 132, 142, andhave all of the components normally used in connection with a personalcomputing device including one or more processors (e.g., a centralprocessing unit (CPU)), memory (e.g., RAM and internal hard drives)storing data and instructions, a display such as displays 114, 134, 144(e.g., a monitor having a screen, a touch-screen, a projector, atelevision, or other device that is operable to display information),and user input devices 116, 136, 146 (e.g., a mouse, keyboard,touch-screen or microphone). The client computing devices may alsoinclude a camera for recording video streams, speakers, a networkinterface device, and all of the components used for connecting theseelements to one another.

In addition, the client computing devices 120 and 130 may also includecomponents 128 and 138 for determining the position and orientation ofclient computing devices. For example, these components may include aGPS receiver to determine the device's latitude, longitude and/oraltitude as well as an accelerometer, gyroscope or anotherdirection/speed detection device.

Although the client computing devices 120, 130, and 140 may eachcomprise a full-sized personal computing device, they may alternativelycomprise mobile computing devices capable of wirelessly exchanging datawith a server over a network such as the Internet. By way of exampleonly, client computing device 120 may be a mobile phone or a device suchas a wireless-enabled PDA, a tablet PC, a wearable computing device orsystem, or a netbook that is capable of obtaining information via theInternet or other networks. In another example, client computing device130 may be a wearable computing system, shown as a head-mountedcomputing system in FIG. 1. As an example the user may input informationusing a small keyboard, a keypad, microphone, using visual signals witha camera, or a touch screen.

In some examples, client computing device 140 may be a concierge workstation used by an administrator to provide concierge services to userssuch as users 122 and 132. For example, a concierge 142 may use theconcierge work station 140 to communicate via a telephone call or audioconnection with users through their respective client computing devicesor vehicles 100A or 100B in order to facilitate the safe operation ofvehicles 100A and 100B and the safety of the users as described infurther detail below. Although only a single concierge work station 140is shown in FIGS. 1 and 2, any number of such work stations may beincluded in a typical system.

Storage system 150 may store various types of information as describedin more detail below. This information may be retrieved or otherwiseaccessed by a server computing device, such as one or more servercomputing devices 110, in order to perform some or all of the featuresdescribed herein. For example, the information may include routing datafor generating and evaluating routes between locations. For example, therouting information may be used to estimate how long it would take avehicle at a first location to reach a second location. In this regard,the routing information may include map information including roads, aswell as information about roads such as direction (one way, two way,etc.), orientation (North, South, etc.), speed limits, as well astraffic information identifying expected traffic conditions, etc. Themap information may also include buildings, elevations, fire hydrants,construction zones, real time traffic conditions, etc. from varioussources such as governmental institutions, paid informational services,manually entered information, information gathered and provided in realtime by autonomous vehicles, etc.

In some instances, the map information may include informationidentifying areas which have been preselected or preapproved for anautonomous vehicle to pick up a passenger (pickup location) or locationswhere the vehicle can wait for an additional passenger, stop and waitfor a passenger to perform some task and return to the vehicle, or forthe vehicle to drop off a passenger (destination location). For example,FIG. 3 is an example of map information 300 including a plurality ofbuildings 302-06 as well roadways 310-14. Map information 300 alsoinclude a number of points 320-326 identifying predetermined locationswhere an autonomous vehicle can park, stop and wait, load and unloadpassengers, etc. The predetermined locations may be manually selected oridentified based on characteristics of such locations (sizes, shapes,parking and other laws, etc.) and, in some cases, manually verified.These predetermined locations may thus include reasonable locationswhere a vehicle could stop selected manually or through some analysis ofthe characteristics of each location. The predetermined locations mayalso be limited to locations within a service area of the autonomousvehicle service.

As with memory 104, storage system 150 can be of any type ofcomputerized storage capable of storing information accessible by theserver computing devices 110, such as a hard-drive, memory card, ROM,RAM, DVD, CD-ROM, write-capable, and read-only memories. In addition,storage system 150 may include a distributed storage system where datais stored on a plurality of different storage devices which may bephysically located at the same or different geographic locations.Storage system 150 may be connected to the computing devices via thenetwork 160 as shown in FIGS. 1 and 2 and/or may be directly connectedto or incorporated into any of the computing devices 110, 120, 130, 140,etc.

In addition to the operations described above and illustrated in thefigures, various operations will now be described. It should beunderstood that the following operations do not have to be performed inthe precise order described below. Rather, various steps can be handledin a different order or simultaneously, and steps may also be added oromitted.

In one aspect, a user may download an application for requesting avehicle to a client computing device. For example, users 122 and 132 maydownload the application via a link in an email, directly from awebsite, or an application store to client computing devices 120 and130. For example, client computing device may transmit a request for theapplication over the network, for example, to one or more servercomputing devices 110, and in response, receive the application. Theapplication may be installed locally at the client computing device.

The user may then use his or her client computing device to access theapplication and request a vehicle. As an example, a user such as user132 may use client computing device 130 to send a request to one or moreserver computing devices 110 for a vehicle. As part of this, the usermay identify a pickup location, a destination location, and, in somecases, one or more intermediate stopping locations anywhere within aservice area where a vehicle can stop.

These pickup and destination locations may be predefined (e.g., specificareas of a parking lot, etc.) or may simply be any location within aservice area of the vehicles. As an example, a pickup location can bedefaulted to current location of the user's client computing device, orcan be input by the user at the user's client device. For instance, theuser may enter an address or other location information or select alocation on a map to select a pickup location. As shown in FIG. 4A, user122 may use his or her finger 422 to tap on a map 424 displayed on thedisplay 114 of client computing device 120. In response, as shown inFIG. 4B, the location of the tap on the map, displayed as map marker426, may be identified as a requested location. Allowing the user toinput or select a location may be especially helpful where the user isnot currently located at the pickup location but will be by the time thevehicle arrives.

In the example of FIG. 4C, a user is provided with a plurality ofoptions for inputting locations. As shown, the user is able to selectfrom a series of saved locations under a saved option 430 previouslysaved by the user as discussed above. The user may also be provided withoption 440 which provide the user with the ability to view a list ofrecent locations. By selecting option 450, the user may be able toconduct a location search. For example, a user may enter a search query(“fast food restaurant” or “doctor doe” or “gas station near me”) andreceive a set of locations corresponding to the search query as with atypical map or location-based search engine.

Once the user has selected one or more of a pickup and/or destinationlocations, the user's client computing device may send the location orlocations to one or more server computing devices of the centralizeddispatching system. In response, the one or more server computingdevices may provide one or more suggested locations corresponding toeach received location.

In order to provide a suggested location in response to a receivedlocation, the one or more server computing devices may access the mapinformation of storage system 150 to determine whether the receivedlocation corresponds to one of the predetermined locations for pickingup or dropping off passengers. If so, the one or more server computingdevices may determine that the received location is in fact reachable.For example, as shown in example 500 of FIG. 5, the location of mapmarker 426 on map 426 corresponds to the location of map marker 526 inFIG. 5. This location also at least partially overlaps with or is thesame as the location of point 326. In this regard, the location of mapmarker 426 (and the finger tap of FIG. 4A) corresponds to thepredetermined location of point 326.

When a requested location does correspond to one of the predeterminedlocations, the one or more server computing devices may provide anotification to the client computing device including a suggestedlocation corresponding to the received location. For example, inresponse to receiving the location of map marker 426 and determiningthat this received location corresponds to the predetermined location ofpoint 326, the one or more server computing devices 110 provide anotification to client computing device 120 suggesting the location ofmap marker 426 as a suggested location for a passenger pickup ordestination location, depending upon the nature of the requestedlocation. As shown in FIG. 6, map marker 426 is now highlighted toindicate that the location of map marker 426 is a suggested locationreturned from the one or more server computing devices 110. The user maythen select the returned suggested location as a pick up or destinationlocation. If the location is a pickup location, the server may thendispatch a vehicle, such as vehicle 100A or vehicle 100B, to theselected location to pick up the user for a trip. If the location is adestination location, the server may provide the selected location tothe vehicle, with instructions to maneuver the vehicle to the selectedlocation with the passenger and drop off a passenger or wait as the casemay be.

When the received location does not correspond to one of thepredetermined locations, the one or more server computing devices mayuse the detailed map information to identify one or more other suggestedlocations. This set of suggested locations may then be provided to theclient computing device that sent the received location.

For example, the one or more server computing devices 110 may identifyset of predetermined locations within a threshold distance of thereceived location. The threshold distance may be defined as apredetermined radial distance from the received location and may also beadjusted (increased or decreased) by a user, for example, by providingthe one or more server computing devices 110 with a user preference. Forexample, a user may then use his or her client computing device toadjust this value up or down and any adjustments may be provided to theone or more server computing devices by the user's client computingdevice.

In one example, a default threshold distance may be 500 feet, or more orless, radially or in walking distance from a received location. In otherwords, the threshold may be used to draw an area around a receivedlocation from a client computing device and identify the set orsuggested locations. For example, as shown in FIG. 7, map marker 710identifies a received location from a client computing device. Area 720may define areas that are within a 500 foot walking distance of mapmarker 710. In some instances, this area may be limited to areas withina roadway where a vehicle can actually travel. Thus, point 326 may beincluded in the set of suggested locations while points 320-24 are not.

As shown in example 800 of FIG. 8, map marker 810 identifies a receivedlocation from a client computing device. The one or more servercomputing devices 110 may then identify a set of suggested locationsincluding any predetermined locations within radius 820 of map marker810 or any predetermined locations within circle 830. In FIG. 8, pointshaving locations within the set of suggested locations are shown asdarkened circles and those not included have only a dark outline. Thus,points 322, 324, and 326 are identified as being within circle 830 whilepoint 320 is not.

The set of suggested locations may include all of the predeterminedlocations within the threshold distance, as shown in FIGS. 7 and 8.Alternatively, the set may include one or more predetermined locationsthat are closest to the received location, up to some maximum value,such as 3 or more or less, within the threshold distance. For example,as shown in FIG. 9, points having locations within the set of suggestedlocations are shown as darkened circles and those not included have onlya dark outline. Thus, while radius 820 and circle 830 identify aplurality of points, points 322 and 324 are not ones of the 3 closest tothe map marker 810. In this regard, the locations of points 322 and 324may be filtered from or not included in the set of suggested locations.At the same time, the location of point 326 is one of the 3 closestpoints to map marker 810. Thus, the location of point 326 may beincluded in the set of suggested locations.

The set of suggested locations may then be provided to the clientcomputing devices. As with the example above, a user may then select orreject any suggested location as either a pick up or destinationlocation, depending upon the nature of the received location. If thelocation is a pickup location, the server may then dispatch a vehicle,such as vehicle 100A or vehicle 100B, to the selected location to pickup the user for a trip. If the location is a destination location, theserver may provide the selected location to the vehicle, withinstructions to maneuver the vehicle to the selected location with thepassenger and drop off a passenger or wait as the case may be.

In some examples, the set of suggested locations may be empty, so theone or more server computing devices do not have any suggested locationsto provide in response to a received location from a client computingdevice. For example, as shown in FIG. 10A, there are no points withinradius 1010 or circle 1020 of the location of map marker 1030corresponding to a received location. Thus, the set of suggestedlocations is empty.

Rather than simply sending the empty set of suggested locations to theclient computing device, the one or more server computing device 110 mayprovide the client computing device with a notification indicating thatthe received location is not available. FIG. 10B is an example of anotification 1040 received by the client computing device 120 anddisplayed on the display 114 to indicate that a received location isunavailable.

In one example, rather than returning all of the predetermined locationsin the set, one or more predetermined locations may be selected for andreturned as a set of suggested locations to the user. For example, eachpredetermined location within the set may be scored using variousfactors and the one or more highest (or lowest depending upon scale)scoring locations may be returned as suggested locations to the user.

The scoring may be based on various factors that quantify the easeand/or difficulty of reaching the predetermined location by one or bothof an autonomous vehicle and the user. Factors related to an autonomousvehicle may include, for example, the location of any autonomousvehicles available to pick up the user (if a pickup location), whetherthe vehicle would have to first pass the location (on the opposite sideof the street) and turn around, whether the autonomous vehicle cancurrently reach the predetermined location (because access istemporarily prevented due to traffic or construction conditions), theavailability of parking or places to pull over and wait at thepredetermined location, as well as any other such factors. Factorsrelated to the user may include, for example, the distance from thereceived location to the predetermined location, the availability andsize of sidewalks, the presence and grade of hills, the number and sizeof roads that would need to be crossed from the received location to thepredetermined location, or any other characteristics of roads that wouldaffect the ease of walking to the suggested location. In one instance,each factor may be individually scored for a given predeterminedlocation and the scores summed to provide an overall score for thatgiven predetermined location.

The scoring may be especially useful situations in which a predeterminedlocation very close to the received location is somehow less desirablethan another predetermined location farther away. For example, if apredetermined location on one side of a highway is closer in distance toa received location, but because of the difficulty involved in walkingthere from the received location, the scoring may identify anotherpredetermined location that is farther away from the received locationbut easier to reach by walking.

For example, FIG. 11 is an example 1100 of map information 1110including a plurality of points 1120-1126 identifying predeterminedlocations as discussed above. Map marker 1130 represents a receivedlocation from a client computing device. Radius 1140 and circle 1150represent a threshold distance from the location of map marker 1130 thatidentify point 1120 and 1122 as being within a set of suggestedlocations. Each of points 1120 and 1122 may be scored. In one example,although point 1122 is farther away from the location of map marker 1130than point 1120, point 1122 may have a higher score than point 1120. Forinstance, point 1120 may require a person to cross road 1160 which maybe a highway or typically busy area in terms of traffic, whereas point1122, though farther away from map marker 1130 does not require a personto cross any roads and is on the same side of road 1162 as the locationof map marker 1130.

In an alternative, rather than returning a received location as asuggested location if the received location corresponds to apredetermined location, the one or more server computing devices maysimply include the predetermined location that corresponds to thereceived location in a set of predetermined locations (the rest of thepredetermined locations in the set being determined using a thresholddistance as described above). In this example, the received location maybe scored along with the other predetermined locations in the set inorder to select the best location or locations to provide as suggestionsto a user as discussed above.

Although the examples discussed above relate to a user initiating a tripby providing a pick up and one or more destination locations, thefeatures described above may be used to identify and suggest destinationlocations for a dropping off of a user during a trip. This may beespecially useful where a problem arises with a destination locationwhich was previously approved by a user. In one example, the problem maybe that the vehicle is no longer able to reach the destination location.This information may be provided to the vehicle's computing device byway of traffic condition updates received, for example, from the one ormore server computing device or a traffic condition service.

In another example, if there is some type of hazard at the destinationlocation where the vehicle would drop off a user, the features describedabove may be used to provide a user with an alternative destination todrop off the user. Hazards may include pot holes, puddles, slipperyground, objects on top of the ground that would make for uneven footing,cracks in the pavement, uneven ground, high curbs, storm drains, brokenglass, etc. For example, various sensors of the vehicle, includinglasers, radar, sonar, etc., may provide data regarding the ground nextto the vehicle. This data may be used to detect any hazards near thevehicle, using computer vision algorithms and the computing device 101.If a hazard is detected the user may be provided with a new suggesteddestination or destinations. This new suggested destination may beselected as discussed above by the vehicle's computing device 101 or bythe vehicle's computing device 101 requesting such information from theone or more server computing devices 110.

In addition to or instead of providing a new suggested destination ordestinations, the vehicle may provide the user with an alert to warn himor her of the hazard. Alerts may take any number of forms includingdisplaying a message on an internal screen, an audible message from aspeaker inside of the vehicle, or a notification sent to a smart phoneprogram being used to interact with the vehicle.

As discussed above, the number of suggested locations provided to theuser may be a default value such as zero or one or more or less.Alternatively, the number of suggested locations may be set by a userand provided to the one or more server computing devices. In yet anotheralternative, the number of suggested locations provided may bedetermined by selecting any of the predetermined locations of the sethaving at least a particular score.

FIG. 12 is an example flow diagram 1200 in accordance with some of theaspects described above that may be performed by one or more computingdevices such as the one or more server computing devices 110. Forexample, at block 1210, a request for a vehicle is received from aclient computing device, wherein the request identifies a firstlocation. Memory storing detailed map information identifying aplurality of predetermined locations where a vehicle is able to pick upor drop off passengers is accessed at block 1220. Predeterminedlocations of the plurality of predetermined locations that are within athreshold distance of the first location are determined at block 1230.Each given one of the identified predetermined locations is scored basedon a first plurality of factors at block 1240. The plurality of factorsare related to the difficulty in a person reaching that given one of theidentified predetermined locations from the first location and on asecond plurality of factors related to the difficulty in an autonomousvehicle reaching and stopping at that given one of the identifiedpredetermined locations. A set of one or more suggested locations isselected based upon the scoring of the identified predeterminedlocations at block 1250. The set of one or more suggested locations isprovided to the client computing device at block 1260. A selection of asuggested location of the set of one or more suggested locations isreceived at block 1270. A vehicle of the one or more autonomous vehiclesis dispatched to the selected suggested location at block 1280.

Unless otherwise stated, the foregoing alternative examples are notmutually exclusive, but may be implemented in various combinations toachieve unique advantages. As these and other variations andcombinations of the features discussed above can be utilized withoutdeparting from the subject matter defined by the claims, the foregoingdescription of the embodiments should be taken by way of illustrationrather than by way of limitation of the subject matter defined by theclaims. In addition, the provision of the examples described herein, aswell as clauses phrased as “such as,” “including” and the like, shouldnot be interpreted as limiting the subject matter of the claims to thespecific examples; rather, the examples are intended to illustrate onlyone of many possible embodiments. Further, the same reference numbers indifferent drawings can identify the same or similar elements.

The invention claimed is:
 1. A system comprising: memory storing aplurality of predetermined locations where a vehicle is able to pick upor drop off passengers; and one or more server computing devices eachhaving one or more processors, the one or more server computing devicesbeing configured to: receive a request from a client computing device,the request identifying a first location; identify a first predeterminedlocation of the plurality of predetermined locations that is a firstdistance from the first location; identify a second predeterminedlocation of the plurality of predetermined locations that is a seconddistance from the first location, the second distance being greater thanthe first distance; and score by assigning a value to each of the firstpredetermined location and the second predetermined locations; selectthe second predetermined location as a suggested location based on thevalue for the first predetermined location and the value for the secondpredetermined location; and provide the suggested location to the clientcomputing device.
 2. The system of claim 1, wherein the one or moreserver computing devices are configured to conduct the scoring based ona plurality of factors related to logistical constraints a personencounters in reaching the first predetermined location from the firstlocation.
 3. The system of claim 2, wherein the one or more servercomputing devices are further configured to determine at least one ofthe plurality of factors based on a distance from the first location tothe first predetermined location or the second predetermined location.4. The system of claim 2, wherein the one or more server computingdevices are further configured to determine at least one of theplurality of factors based on walking conditions from the first locationto the first predetermined location or the second predeterminedlocation.
 5. The system of claim 4, wherein the walking conditionsinclude whether there are hills.
 6. The system of claim 4, wherein thewalking conditions include whether there are sidewalks.
 7. The system ofclaim 4, wherein the walking conditions include whether a road iscrossed.
 8. The system of claim 1, wherein the one or more servercomputing devices are configured to conduct the scoring based on aplurality of factors related to logistical constraints the vehicleencounters in reaching and stopping at the predetermined locations fromthe first location.
 9. The system of claim 8, wherein the one or moreserver computing devices are further configured to determine at leastone of the plurality of factors based on a current location of thevehicle.
 10. The system of claim 8, wherein the one or more servercomputing devices are further configured to determine at least one ofthe plurality of factors based on whether the vehicle would have tofirst pass the first predetermined location or the second predeterminedlocation and turn around.
 11. The system of claim 8, wherein the one ormore server computing devices are further configured to determine atleast one of the plurality of factors based on whether the vehicle wouldapproach the first predetermined location or the second predeterminedlocation from an opposite side of a road.
 12. The system of claim 1,wherein the one or more server computing devices are further configuredto identify the first predetermined location and the secondpredetermined location using a predetermined distance from the firstlocation.
 13. The system of claim 12, wherein the predetermined distanceis defined as a walking distance for a person.
 14. The system of claim1, wherein the one or more server computing devices are furtherconfigured to, prior to identifying the first predetermined location andprior to identifying the second predetermined location, determine thatthe first location is not one of the plurality of predeterminedlocations.